package com.yang.Offer;

public class Offer11 {
}
// 二分法
class SolutionOffer11 {
    public int minArray(int[] numbers) {
        int left = 0;
        int right = numbers.length-1;
        while(left < right){
            int mid = (left + right)/2;
            // 如果中间数小于右边数 说明中间数在第二个子数组(小的) 这时要让右指针移到中间指针
            if(numbers[mid] < numbers[right] ){
                right = mid;
            }
            // 如果中间数 大于右边数，说明此时中间数在第一个子数组(旋转数组)，此时需要缩小范围，让左指针移到中间数前一个数
            else if(numbers[mid] > numbers[right]){
                left = mid + 1;
            }
            // 否则就右边指针缩小范围
            else{
                right --;
            }
        }
        return numbers[left];
    }
}
